import { type $Task, downLoadQueue } from './download.js';
import { getOnlyID } from '../common';

/**
 * 图片缓存操作类
 */
export class ImgCache {
  /**
   * 设置图片缓存
   * @param {string} imgUrl - 网络图片地址
   */
  public setCache(imgUrl: string) {
    // 创建图片下载任务
    const task: $Task = { filePath: this.createFilePath(imgUrl), url: imgUrl, isDownload: false };
    // 添加图片下载任务
    downLoadQueue.DownLoadSaveFile(task);
  }

  /**
   * 获取图片缓存
   * @param {string} imgUrl - 网络图片地址
   */
  public async getCache(imgUrl: string): Promise<string | null> {
    // 创建文件key值
    const filePath = this.createFilePath(imgUrl);
    return await downLoadQueue.isExistFile(filePath);
  }
  /**
   * 拼接图片文件缓存路径
   * @param {string} imgUrl - 网络图片地址
   */
  public createFilePath(imgUrl: string) {
    const list = imgUrl.split('.');
    const fileName = `${getOnlyID('img_down_load').toString()}.${list[list.length - 1]}`;
    let url = '';
    // #ifdef MP-WEIXIN
    url = `${wx.env.USER_DATA_PATH}/${fileName}`;
    // #endif
    // #ifdef APP-PLUS
    url = `_doc/imgCache/${fileName}`;
    // #endif
    return url;
  }
}
